Page({
    data: {
        files: [],
        arrurls: [],
        formData: {}, //表单的内容
        rules: [{ //  表单规则
            name: 'name',
            rules: { required: true, message: '爱车名称必填' },
        }]
    },
    onLoad() {
        this.setData({
            selectFile: this.selectFile.bind(this),
            uplaodFile: this.uplaodFile.bind(this),
            arrurls: [],
        })
    },
    chooseImage: function(e) {
        var that = this;
        wx.chooseImage({
            sizeType: ['original', 'compressed'], // 可以指定是原图还是压缩图，默认二者都有
            sourceType: ['album', 'camera'], // 可以指定来源是相册还是相机，默认二者都有
            success: function(res) {
                // 返回选定照片的本地文件路径列表，tempFilePath可以作为img标签的src属性显示图片
                console.log('chooseImage', res)
                that.setData({
                    files: that.data.files.concat(res.tempFilePaths)
                });
            }
        })
    },
    previewImage: function(e) {
        wx.previewImage({
            current: e.currentTarget.id, // 当前显示图片的http链接
            urls: this.data.files // 需要预览的图片http链接列表
        })
    },
    selectFile(files) {
        console.log('files', files)
            // 返回false可以阻止某次文件上传
    },
    uplaodFile(files) {
        console.log('upload files', files)
        const that = this;

        // 文件上传的函数，返回一个promise
        return new Promise((resolve, reject) => {
            that.setData({
                arrurls: []
            })
            var object = {};

            const filePath = files.tempFilePaths[0]
                //   上传图片
            const cloudPath = (new Date()).getTime() + Math.floor(9 * Math.random()) + ".jpg"
            console.log(cloudPath)
            wx.cloud.uploadFile({
                cloudPath,
                filePath,
                success: res => {
                    console.log('[上传文件] 成功：', res)
                    that.setData({
                        arrurls: that.data.arrurls.concat(res.fileID)
                    });
                    object['urls'] = that.data.arrurls;
                    resolve(object) // 返回urls
                },
                fail: e => {
                    console.error('[上传文件] 失败：', e)
                    wx.showToast({
                        icon: 'none',
                        title: '上传失败',
                    })
                },
                complete: () => {
                    // wx.hideLoading()
                }
            })
        })
    },
    uploadError(e) {
        console.log(this.data.files)
        console.log('upload error', e.detail)
    },
    uploadSuccess(e) {
        console.log('upload success', e.detail)
    },
    formInputChange(e) { // 表单修改
        const { field } = e.currentTarget.dataset
        this.setData({
            [`formData.${field}`]: e.detail.value
        })
    },


    submitForm() {
        this.selectComponent('#form').validate((valid, errors) => {
            console.log('valid', valid, errors)
            if (!valid) {
                const firstError = Object.keys(errors)
                if (firstError.length) {
                    wx.showToast({
                        icon: 'none',
                        title: errors[0].message,
                    })
                }
            } else {
                wx.showToast({
                        title: '校验通过'
                    })
                    // 获取信息 存入数据库
                let that = this
                var params = {
                    'name': that.data.formData.name,
                    'image': that.data.arrurls[0] || "cloud://car-test-1jjya.6361-car-test-1jjya-1302871463/1598950880944.jpg",
                    'carNo': that.data.formData.carNo || "",
                    'time': new Date().toTimeString().split(' ')[0],
                    'status': 'nostop'
                }
                console.log(params)
                wx.cloud.callFunction({ // 调取云函数 获取用户车辆信息
                    name: 'addcar',
                    data: params,
                    success: res => {
                        console.log('addcar本地', res)
                        if (res.result == 'isExist') {
                            wx.showToast({
                                icon: 'none',
                                title: '车的名字不能重复哦！'
                            })
                        } else {
                            wx.showToast({
                                icon: 'success',
                                title: '车辆添加成功'
                            })
                            wx.switchTab({
                                url: '../car/car' //页面跳转
                            })
                        }
                    }
                })
                // 原前端调用数据库测试代码
                // const db = wx.cloud.database()
                // const cars = db.collection('cars')
                // console.log(getApp().globalData)
                // let openid = getApp().globalData.openId
                // 查看 数据库中改用户是否已经有这个车的名字了
                // cars.where({
                //     '_openid': openid,
                //     'name': params.name
                // }).get().then(res => {
                //     console.log(res.data)
                //     if (res.data.length == 0) { // 当数据库中不存在这辆车的时候
                //         console.log("不存在")
                //         cars.add({
                //             data: params,
                //             success: res => {
                //                 console.log("数据添加成功")
                //                 wx.switchTab({
                //                     url: '../car/car' //页面跳转
                //                 })
                //             }
                //         })
                //     } else {
                //         wx.showToast({
                //             icon: 'none',
                //             title: '已经存在这辆车的名字的'
                //         })
                //     }
                // })
            }
        })
    },
    addcar(params) {
        console.log("准备添加")
        const db = wx.cloud.database()
        const cars = db.collection('car')
        cars.add(params).then(res => {
            console.log(res)
        })
    }
});